import Vue from 'vue';
import Vuex from 'vuex';
//在 Vuex 的 actions 中，this 并不指向 Vue 实例，所以无法直接使用 this.$myRequest。所以需要将 myRequest 导入到 Vuex 模块中并直接使用它。
import {myRequest} from '@/util/api.js'
Vue.use(Vuex);

const store = new Vuex.Store({
	state: {
		userInfo: {
			avatar: '',
			username: '',
			id: ''
		}
	},
	mutations: {
		setUserInfo(state, info) {
			state.userInfo = info;
			// console.log(state.userInfo)
		},
		clearUserInfo(state,user){
			state.userInfo=user;
			// console.log(state.userInfo)
		}
	},
	actions: {
		//执行异步的方法myRequest
		async login({commit}, loginData) {
			try {
				const res = await myRequest({
					method: 'POST',
					url: '/api/user/login',
					data: {
						username: loginData.username,
						password: loginData.password,
					}
				})

				//只有在res返回登录正确的反馈，才将用户信息存入state。但不论是否正确登录，都要返回给前端一个结果，前端根据结果作进一步判断提示
				return res;
			} catch (error) {
				console.error('登录请求失败:', error);
				// 这里可以根据具体需求添加更多的错误处理逻辑
				// 例如，向用户显示错误提示
				uni.showToast({
					title: '登录失败',
					icon: 'none'
				});
				return null;
			}
		},
		setUser({commit}, userInfo) {
			commit('setUserInfo', userInfo);
		},
		clearUser({commit},user){
			commit('clearUserInfo',user)
		}
	},
	getters: {
		getUserInfo(state) {
			return state.userInfo;
		}
	}

});

export default store;
